今天是紀錄LeetCode解題的第七天
第七題題目:Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-2^31, 2^31 - 1], then return 0.
給定一個整數x,回傳反轉後的x,如果反轉後的x超出有符號的32位元整數範圍,則回傳0
這題用python寫相當的簡單,我們直接來看程式碼
class Solution:
def reverse(self, x: int) -> int:
int_min = -2**31
int_max = 2**31 - 1
sign = -1 if x < 0 else 1
x = abs(x)
rev = int(str(x)[::-1]) * sign
if rev < int_min or rev > int_max:
return 0
return rev
直接把x的數字部分當成字串反轉,sign則是記錄原本的x是否有帶負號,這裡反轉的寫法是python的切片寫法,主要有五種寫法:
start:起始索引(包含),預設是0
stop:結束索引(不包含),預設字串/序列長度
step:每次間隔多少索引,預設是1,step > 0 → 從左到右(正向),step < 0 → 從右到左(反向)